#ifndef STATS_MONITOR_H
#define STATS_MONITOR_H

#include "storage_system.h"
#include <stdint.h>

// 替换日志结构
typedef struct {
    page_id_t evicted_page;
    page_id_t new_page;
    uint32_t timestamp;
    int was_dirty;
    cache_replacement_policy_t policy;
} replacement_log_entry_t;

// 统计监视器接口
typedef struct stats_monitor stats_monitor_t;

// 统计监视器创建与销毁
stats_monitor_t* stats_monitor_create();
void stats_monitor_destroy(stats_monitor_t* monitor);

// 替换日志记录
void stats_monitor_log_replacement(stats_monitor_t* monitor,
    page_id_t evicted_page, page_id_t new_page,
    int was_dirty, cache_replacement_policy_t policy);

// 统计信息获取
uint32_t stats_monitor_get_replacement_count(stats_monitor_t* monitor);

// 统计信息打印
void stats_monitor_print_cache_stats(uint32_t hits, uint32_t misses, uint32_t cache_size, uint32_t cache_capacity);
void stats_monitor_print_replacement_log(stats_monitor_t* monitor);

#endif // STATS_MONITOR_H